Network telephony is a system through which users can engage in live voice conversations using a computer network, such as the Internet, as a medium of transmission. From a user's perspective, a network telephone behaves similarly to a conventional telephone. However, a network telephone is actually a network device, more similar to a personal computer than to a conventional telephone. Because the network telephone is a network device, the network telephone has a network address and communicates with other network devices using network packets.
While simple in theory, network telephony is complex in practice. For instance, a network telephone must register with a network telephony service provider in order to receive calls. Moreover, the network telephone must periodically renew this registration to ensure that other telephones can locate the network telephone in the event the network telephone physically moves or is reassigned a different network address.
In some respects, the advent of firewall technology has made network telephony more difficult. In general, a firewall blocks undesired incoming packets addressed to a set of protected network devices, but does not block outgoing packets from leaving the protected network devices. In addition, the firewall allows the protected devices to receive packets sent in direct response to the packets sent out by the protected devices. In other words, sending a packet out through the firewall creates a logical “pinhole” through which response packets may traverse the firewall. To guarantee maximum security and conserve resources, the firewall typically closes the pinhole within a given time unless traffic continues to flow through the pinhole. For example, the firewall may be configured to automatically close the pinhole after one minute of inactivity.
When a network telephone registers with the network telephony service provider, the network telephone sends one or more packets out through the firewall, thereby creating a pinhole for packets arriving from the network telephony service provider. Because an invitation to initiate a call arrives from the network telephony service provider, the invitation may use this pinhole to arrive at the network telephone. However, the firewall may have closed the pinhole in the time between forwarding the registration request and receiving the invitation. If the pinhole has closed, the firewall blocks the invitation and the receiving network telephone is prevented from receiving the invitation. To prevent this scenario, the network telephone reregisters itself in a period shorter than the time in which the firewall closes the pinhole. For example, if the firewall closes a pinhole after one minute of inactivity, the network telephone may be forced to reregister every 30 seconds in order to guarantee that the pinhole remains open.
Keeping the pinhole open by reregistering every 30 seconds generates a significant amount of network traffic. In addition to the frequent registration requests, the network telephony service provider sends a response packet back to the network telephone in response to each registration request. If there are a large number of network telephones on a network, the burden of handling registration requests and responses at such a high frequency may consume resources and negatively impact the performance of networks through which the registration requests and responses travel. For example, network congestion could increase, routers may drop packets, quality of service may suffer, and registration messages may not reach the network telephony service provider. Such performance problems may increase as more residential and enterprise users convert from conventional telephones to network telephony, and, in particular, to Voice over Internet Protocol (VoIP) technology. Registration for network telephony is one example of many applications that use signaling protocols to register their presence to an application service provider. Many of these applications face the same problem in maintaining an open pinhole through a firewall.